/*
 * @lc app=leetcode.cn id=134 lang=javascript
 *
 * [134] 加油站
 */

// @lc code=start
/**
 * @param {number[]} gas
 * @param {number[]} cost
 * @return {number}
 */
var canCompleteCircuit = function (gas, cost) {
  const n = gas.length;
  let total = 0; // 总油量
  let cur = 0; // 当前油量
  let start = 0; // 起点

  for (let i = 0; i < n; i++) {
    total += gas[i] - cost[i];
    cur += gas[i] - cost[i];
    // 如果当前油量为负，说明从当前起点无法到达下一个加油站
    if (cur < 0) {
      start = (i + 1) % n;
      cur = 0; // 重置当前油量
    }
  }

  // 如果总油量大于等于0，说明存在解
  return total >= 0 ? start : -1;
};
// @lc code=end
